package view_server

import (
	"bigdevops/src/cache"
	"bigdevops/src/common"
	"github.com/gin-gonic/gin"
)

// Prometheus主配置文件
func getMonitorPrometheusYamlOne(c *gin.Context) {
	mainConfigYaml := fetchPrometheusMainConfigYamlByCache(c)

	//c.String(200, mainConfigYaml)
	common.OkWithData(mainConfigYaml, c)

}

func downLoadPrometheusMainConfigYaml(c *gin.Context) {
	mainConfigYaml := fetchPrometheusMainConfigYamlByCache(c)
	c.String(200, mainConfigYaml)
	//common.OkWithMessage(mainConfigYaml, c)

}

func fetchPrometheusMainConfigYamlByCache(c *gin.Context) string {
	mc := c.MustGet(common.GIN_CTX_MONITOR_CACHE).(*cache.MonitorCache)
	// 校验一下 menu字段

	//nextStatus := c.Query("nextStatus")
	ip := c.Query("ip")
	// 从缓存中根据ip 获取这个节点的 主配置文件

	mainConfigYaml := mc.GetPrometheusMainConfigYamlByIp(ip)
	return mainConfigYaml
}

// alertmanager主配置文件
func getMonitorAlertMangerYamlOne(c *gin.Context) {
	mainConfigYaml := fetchAlertManagerMainConfigYamlByCache(c)
	common.OkWithData(mainConfigYaml, c)

}

func downLoadAlertManagerMainConfigYaml(c *gin.Context) {
	mainConfigYaml := fetchAlertManagerMainConfigYamlByCache(c)
	c.String(200, mainConfigYaml)

}

func fetchAlertManagerMainConfigYamlByCache(c *gin.Context) string {
	mc := c.MustGet(common.GIN_CTX_MONITOR_CACHE).(*cache.MonitorCache)
	// 校验一下 menu字段

	//nextStatus := c.Query("nextStatus")
	ip := c.Query("ip")
	// 从缓存中根据ip 获取这个节点的 主配置文件

	mainConfigYaml := mc.GetAlertManagerMainConfigYamlByIp(ip)
	return mainConfigYaml
}

// 告警规则
func getMonitorPrometheusAlertYamlOne(c *gin.Context) {
	mainConfigYaml := fetchPrometheusAlertConfigYamlByCache(c)
	common.OkWithData(mainConfigYaml, c)

}

// 预聚合规则
func getMonitorPrometheusRecordYamlOne(c *gin.Context) {
	mainConfigYaml := fetchPrometheusRecordConfigYamlByCache(c)
	common.OkWithData(mainConfigYaml, c)

}

func downLoadPrometheusAlertConfigYaml(c *gin.Context) {
	mainConfigYaml := fetchPrometheusAlertConfigYamlByCache(c)
	c.String(200, mainConfigYaml)

}

func downLoadPrometheusRecordConfigYaml(c *gin.Context) {
	mainConfigYaml := fetchPrometheusRecordConfigYamlByCache(c)
	c.String(200, mainConfigYaml)

}

func fetchPrometheusAlertConfigYamlByCache(c *gin.Context) string {
	mc := c.MustGet(common.GIN_CTX_MONITOR_CACHE).(*cache.MonitorCache)
	// 校验一下 menu字段

	//nextStatus := c.Query("nextStatus")
	ip := c.Query("ip")
	// 从缓存中根据ip 获取这个节点的 主配置文件

	mainConfigYaml := mc.GetPrometheusAlertRuleConfigYamlByIp(ip)
	return mainConfigYaml
}

func fetchPrometheusRecordConfigYamlByCache(c *gin.Context) string {
	mc := c.MustGet(common.GIN_CTX_MONITOR_CACHE).(*cache.MonitorCache)
	// 校验一下 menu字段

	//nextStatus := c.Query("nextStatus")
	ip := c.Query("ip")
	// 从缓存中根据ip 获取这个节点的 主配置文件

	mainConfigYaml := mc.GetPrometheusRecordRuleConfigYamlByIp(ip)
	return mainConfigYaml
}
